关于Java枚举的重写
文章目录
对于Java枚举我之前所知道的是1:
- 枚举本身就是一个类。
- 它不能有
public
的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 - 所有枚举值都是
public static final
的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 - Enum默认实现了
java.lang.Comparable
接口。 - Enum覆载了了
toString
方法,因此我们如果调用Color.Blue.toString()
,默认返回字符串”Blue”. - Enum提供了一个
valueOf
方法,这个方法和toString
方法是相对应的。调用valueOf(“Blue”)
将返回Color.Blue
.因此我们在自己重写toString
方法的时候就要注意到这一点,一般来说应该相对应地重写valueOf
方法。 - Enum还提供了
values
方法,这个方法使你能够方便的遍历所有的枚举值 - Enum还有一个
oridinal
的方法,这个方法返回枚举值在枚举类种的顺序。
《Effective Java》中写着单例模式推荐的方式是使用单元素的枚举类实现,在查资料过程中竟然发现枚举值里面还能重写枚举的方法:
1 |
|
使用单例的方式来调用sayHello
1 | System.out.println(Person.instance.sayHello("tom")); |
可以看到其输出为:
Hello:tom
gays:tom
girls:tom
参考
- http://www.cnblogs.com/rollenholt/archive/2012/11/27/2790402.html
- http://www.cnblogs.com/hemingwang0902/archive/2011/12/29/2306263.html
本作品采用[知识共享署名-非商业性使用-相同方式共享 2.5]中国大陆许可协议进行许可,我的博客欢迎复制共享,但在同时,希望保留我的署名权kubiCode,并且,不得用于商业用途。如您有任何疑问或者授权方面的协商,请给我留言。